/*
 * @Descripttion: 
 * @version: 
 * @Author: lily
 * @Date: 2021-04-07 17:09:43
 * @LastEditors: lily
 * @LastEditTime: 2021-04-07 17:21:24
 */
/*
 * @lc app=leetcode.cn id=191 lang=javascript
 *
 * [191] 位1的个数
 */

// @lc code=start
/**
 * @param {number} n - a positive integer
 * @return {number}
 */

//  思路：
//  通过 n & (n-1) 清除最右侧的1，每清除一次count+1，直到为0

//  复杂度：O(m) m为1的个数  O(1)

var hammingWeight = function (n) {
    let count = 0
    while (n) {
        count++
        n = n & (n - 1);
    }
    return count
};
// @lc code=end

